#ifndef PRIORITY_QUEUE_H
#define PRIORITY_QUEUE_H

#include <queue>
#include <iostream>

template<typename E, typename Container = std::vector<E>, typename Compare = std::less<typename Container::value_type>>
class JavaPriorityQueue {
private:
    std::priority_queue<E, Container, Compare> *priority_queue;

public:
    explicit JavaPriorityQueue(std::priority_queue<E, Container, Compare> *que);
    ~JavaPriorityQueue();

public:
    bool empty();
    E peek();
    E poll();
    void offer(const E &item);
    int search(const E &item);
};

int JavaPriorityQueue_main();

#endif // PRIORITY_QUEUE_H